$(function() {
    $("#botonBuscarVentas").click(function() {
        $("#coverDisplay").css({
            "opacity": "1",
            "width": "100%",
            "height": "100%"
        });
        var url = "historialVentas?";
        if ($("#selectCategoria").val() != "") {
            url += "categoria=" + $("#selectCategoria").val() + "&";
        }
        if ($("#selectProducto").val() != "" && $("#selectProducto").val() != null) {
            url += "producto=" + $("#selectProducto").val() + "&";
        }
        if ($("#selectTipo").val() != "") {
            url += "tipo=" + $("#selectTipo").val() + "&";
        }
        if ($("#desde").val() != "") {
            url += "desde=" + $("#desde").val() + "&";
        }
        if ($("#hasta").val() != "") {
            url += "hasta=" + $("#hasta").val() + "&";
        }
        if ($("#usuario").val() != "") {
            url += "usuario=" + $("#usuario").val() + "&";
        }
        url = url.substr(0, url.length - 1);
        window.location.href = url;
    });


    $("#buscarVentas .criterio").keypress(function(e) {
        if (e.which == 13) {
            $("#botonBuscarVentas").trigger("click");
        }
    });

    $("#selectCategoria").change(function() {
        if ($(this).val() == "") {
            $("#selectProducto").html("").prop("disabled", true);
        } else {
            $.ajax({
                url: "listarProductos",
                data: {
                    idCategoria: $(this).val(),
                },
                type: 'POST',
                success: function(data) {
                    if (data != "[]") {
                        data = JSON.parse(data);
                        var str = "<option value=''>Todo</option>";
                        $.each(data, function(k, l) {
                            str += "<option value='" + l.id_servicio + "'>" + l.nombre + "</option>";
                        });
                        $("#selectProducto").html(str).prop("disabled", false)
                    }
                }
            });
        }
    });


    $("#paginacion li.noActive a").click(function() {
        $("#coverDisplay").css({
            "opacity": "1",
            "width": "100%",
            "height": "100%"
        });
        var paginacion = $("#paginacion");
        if ($(this).data("page") == 1) {
            url = "historialVentas?";
        } else {
            var url = "historialVentas?page=" + $(this).data("page") + "&";
        }

        if ($(paginacion).data("categoria") != "") {
            url += "categoria=" + $(paginacion).data("categoria") + "&";
        }
        if ($(paginacion).data("producto") != "") {
            url += "producto=" + $(paginacion).data("producto") + "&";
        }
        if ($(paginacion).data("tipo") != "") {
            url += "tipo=" + $(paginacion).data("tipo") + "&";
        }
        if ($(paginacion).data("desde") != "") {
            url += "desde=" + $(paginacion).data("desde") + "&";
        }
        if ($(paginacion).data("hasta") != "") {
            url += "hasta=" + $(paginacion).data("hasta") + "&";
        }
        if ($(paginacion).data("usuario") != "") {
            url += "usuario=" + $(paginacion).data("usuario") + "&";
        }
        url = url.substr(0, url.length - 1);
        window.location.href = url;
    });

    $("#desde").datepicker({
        changeMonth: true,
        numberOfMonths: 1,
        changeYear: true,
        dateFormat: "dd/mm/yy",
        monthNamesShort: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
        dayNamesMin: ["Dom", "Lun", "Mar", "Mié", "Juv", "Vie", "Sáb"],
        onClose: function(selectedDate) {
            $("#hasta").datepicker("option", "minDate", selectedDate);
        }
    });
    $("#hasta").datepicker({
        changeMonth: true,
        numberOfMonths: 1,
        changeYear: true,
        dateFormat: "dd/mm/yy",
        monthNamesShort: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
        dayNamesMin: ["Dom", "Lun", "Mar", "Mié", "Juv", "Vie", "Sáb"],
        onClose: function(selectedDate) {
            $("#desde").datepicker("option", "maxDate", selectedDate);
        }
    });
    if ($("#desde").val() != "") {
        $("#hasta").datepicker("option", "minDate", $("#desde").val());
    }
    if ($("#hasta").val() != "") {
        $("#desde").datepicker("option", "maxDate", $("#hasta").val());
    }
    $("#tablaVentas .botonVerMas").click(function() {
        $("#labelFechaVenta").html($(this).data("fecha"));
        $("#labelUsuarioVenta").html($(this).data("usuario"));
        $("#mostrarNombreCliente").val($(this).data("cliente"));
        $("#mostrarCategoria").val($(this).data("nombrecategoria"));
        $("#mostrarProductoServicio").val($(this).data("nombreproducto"));
        $("#mostrarPrecioUnitario").val($(this).data("preciounitario"));
        $("#mostrarCantidad").val($(this).data("cantidad"));
        $("#mostrarDescuento").val($(this).data("descuento"));
        $("#mostrarImpuesto").val($(this).data("impuesto"));
        $("#mostrarTotal").val($(this).data("total"));
        $("#mostrarNota").val($(this).data("nota"));
        $("#selectEstatus").data("idventaservicio", $(this).data("idventaservicio"));
        var selectEstatus = $(this).data("estatus");
        var tipo = $(this).data("tipo");
        if (tipo == "En hospedaje") {
            $("#selectEstatus").html("<option value='" + selectEstatus + "'>" + selectEstatus + "</option>").prop("disabled", true);
        } else {
            $("#selectEstatus").html("<option value='Pendiente'>Pendiente</option><option value='Pagado'>Pagado</option>").prop("disabled", false);
            $("#selectEstatus").val(selectEstatus);

        }
        if (selectEstatus == "Pagado") {
            $("#mostrarDivFormaDePago").show();
            $("#mostrarModoPagoSelected").val($(this).data("modopago"))
        } else {
            $("#mostrarDivFormaDePago").hide();
        }
        $("#selectMostrarEstatus").val(selectEstatus);
        $("#verMas").modal();
    });
    $("#tablaVentas .eliminarVenta").click(function() {
        $("#nombre-cliente-venta").html($(this).data("cliente"));
        $("#id-categoria-producto").val($(this).data("idcategoriaproducto"));
        $("#id-venta-servicio").val($(this).data("idventaservicio"));
        $("#id-servicio").val($(this).data("idservicio"));
        $("#modalEliminarVenta").modal();
    });

    $("#crearVenta").click(function() {
        $("#datosVenta").hide();
        $("#datosPersona").show();

        $("#modalCrearVenta").css({
            "width": '960px',
            "margin-left": "-480px"
        });
        $("#modalCrearVenta .modal-body").css({
            "height": "220px",
        });
        $("#nacionalidad").val('');
        $("#identificacion").val('');
        $("#idCliente").val('');
        $("#resultadoAjax").html('');
        desBoquearInputPersona();
        $("#modalCrearVenta").modal();
    });
    $("#agregarCategoria").change(function() {
        resetFormConsumo();
        if ($(this).val() == "") {
            $("#agregarProductoServicio").html("").attr('readonly', true);

        }
        else {
            $("#agregarProductoServicio").val("");
            cargarProductosServicios($(this).val());
        }
    });

    $("#agregarProductoServicio").change(function() {
        resetFormConsumo();
        if ($(this).val() == "") {

        } else {
            var select = $(this).find('option:selected');
            var valorunitario = select.attr("data-valorunitario");

            var selectCategoria = $("#agregarCategoria").find('option:selected');
            var tieneInventario = selectCategoria.attr("data-tieneinventario");
            if (tieneInventario == 1) {
                var cantidadActual = select.attr("data-cantidadActual");
                $("#agregarAyudaCantidad").html(cantidadActual + " en inventario.");
            } else {
                $("#agregarAyudaCantidad").html("");
            }
            $("#agregarCantidad").attr('readonly', false);
            $("#agregarPrecioUnitario").val(valorunitario);
            calcularTotalSubTotal();
        }

    });

    $("#agregarCantidad").change(function() {
        $("#agregarAdvertenciaCantidad").hide();
        if ($(this).val() == "" || $(this).val() == 0) {
            $(this).val("");
            $("#agregarSubtotal").val("");
            $("#agregarTotal").val("");
            $("#agregarDescuento").val("");
            $("#agregarDescuento").attr('readonly', true);
        }
        else {
            var selectCategoria = $("#agregarCategoria").find('option:selected');
            var tieneInventario = selectCategoria.attr("data-tieneinventario");
            if (tieneInventario == 1) {
                var select = $("#agregarProductoServicio").find('option:selected');
                var cantidadActual = select.attr("data-cantidadActual");
                if (parseInt($(this).val()) <= parseInt(cantidadActual)) {
                    calcularTotalSubTotal();
                    $("#agregarDescuento").val("0");
                    $("#agregarDescuento").attr('readonly', false);
                }
                else {
                    $(this).val("");
                    $("#agregarAdvertenciaCantidad").show();
                    $("#agregarSubtotal").val("");
                    $("#agregarDescuento").val("");
                    $("#agregarDescuento").attr('readonly', true);
                    $("#agregarTotal").val("");

                }
            } else {
                calcularTotalSubTotal();
                $("#agregarDescuento").val("0");
                $("#agregarDescuento").attr('readonly', false);
            }

        }
    });
    $("#agregarDescuento").change(function() {
        var descuento = parseFloat($(this).val());
        var subtotal = parseFloat($("#agregarSubtotal").val());
        if (descuento > subtotal) {
            $(this).val("0");
        }
        calcularTotalSubTotal();
    });
    $("#agregarImpuestos .checkbox").change(function() {
        calcularTotalSubTotal();
    });
    function calcularTotalSubTotal() {
        var precioUnitario = $("#agregarPrecioUnitario").val();
        var cantidad = $("#agregarCantidad").val();
        if (precioUnitario != "" && cantidad != "") {
            precioUnitario = parseFloat(precioUnitario);
            cantidad = parseInt(cantidad);
            var subTotal = precioUnitario * cantidad;
            $("#agregarSubtotal").val(subTotal);
            var totalImpuesto = 0;
            var descuento = $("#agregarDescuento").val();
            $('#agregarImpuestos .checkbox').each(function() {
                if ($(this).is(':checked')) {
                    var valorImpuesto = parseFloat($(this).data("valor"));
                    totalImpuesto = totalImpuesto + valorImpuesto * (subTotal - descuento) / 100;
                }
            });
            var total = subTotal + totalImpuesto - descuento;
            $("#agregarTotal").val(total);
        }
    }

    function cargarProductosServicios(categoria) {
        $.ajax({
            url: "cargarProductosServicios",
            data: {
                categoria: categoria
            },
            type: 'POST',
            success: function(data) {
                var select = [];
                if (data != "[]") {
                    data = JSON.parse(data);
                    $("#agregarProductoServicio").attr('readonly', false);
                    select.push("<option value=''>Seleccionar...</option>");
                    $.each(data, function(i, j) {
                        select.push("<option value='" + j.id_servicio + "' data-valorUnitario='" + j.valor + "' data-cantidadActual='" + j.cantidad_actual + "'>" + j.nombre + "</option>");
                    });

                }
                select = select.join("");
                document.getElementById('agregarProductoServicio').innerHTML = select;
            }
        });
    }
    function resetFormConsumo() {
        $("#agregarPrecioUnitario").val("");
        $("#agregarCantidad").val("");
        $("#agregarCantidad").attr('readonly', true);
        $("#agregarAyudaCantidad").html("");
        $("#agregarAdvertenciaCantidad").hide();
        $("#agregarDescuento").val("");
        $("#agregarDescuento").attr('readonly', true);
        $("#agregarSubtotal").val("");
        $("#agregarTotal").val("");
    }
//    $("#enviarFormCrearVenta").click(function() {
//        if (validarFormularioAfter("formCrearVenta")) {
//            $("#formCrearVenta").submit();
//        }
//    });
    $("#selectEstatus").change(function() {
        var idventaservicio = $(this).data("idventaservicio");
        var estatus = $(this).val();
        var modoPago = $("#mostrarModoPagoSelected").val();
        $("#coverDisplay").css({
            "opacity": "1",
            "width": "100%",
            "height": "100%"
        });
        $.ajax({
            url: "cambiarEstatusVenta",
            data: {
                id_venta_servicio: idventaservicio,
                estatus: estatus,
                modopago: modoPago
            },
            type: 'POST',
            success: function(data) {
                if (estatus == "Pendiente") {
                    $("#mostrarDivFormaDePago").hide();
                } else if (estatus == "Pagado") {
                    $("#mostrarDivFormaDePago").show();
                }
                $("#estatus" + idventaservicio + "").html(estatus);
                $("#botonVerMas" + idventaservicio + "").data("estatus", estatus);
                $("#coverDisplay").css({
                    "opacity": "0",
                    "width": "0%",
                    "height": "0%"
                });
            }
        });
    });
    $("#nuevoEstatus").change(function() {
        if ($(this).val() == "Pendiente") {
            $("#divFormaDePago").hide("normal");
        } else {
            $("#divFormaDePago").show("normal");
        }
    });
    $("#mostrarModoPagoSelected").change(function() {
        $("#selectEstatus").trigger("change");
    });












    $("#siguienteCrearVenta").click(function() {
        if ($("#datosPersona").is(":visible")) {
            $("#datosPersona .error").remove();
            $("#ayudaFechaNacimiento").hide();
            if ($("#nombre").val() == "") {
                $("#nombre").focus();
                $("#nombre").before("<span class='error'>*</span>");
                return false;
            }
            if (document.getElementById("fechaNacimiento").value != "") {
                var expresionRegular = /^\d{2}\/\d{2}\/\d{4}$/;
                if (!(document.getElementById("fechaNacimiento").value).match(expresionRegular)) {
                    $("#ayudaFechaNacimiento").show();
                    return  false;
                }
            }
            $("#datosPersona").hide();
            $("#datosVenta").show();
            $("#modalCrearVenta").css({
                "width": '560px',
                "margin-left": "-280px"
            });
            $("#modalCrearVenta .modal-body").css({
                "height": "350px",
            });
            $("#agregarCategoria").val('');
            $("#agregarProductoServicio").attr('readonly', true).val('');
            $("#agregarPrecioUnitario").attr('readonly', true).val('');
            $("#agregarCantidad").attr('readonly', true).val('');
            $("#agregarAyudaCantidad").html("");
            $("#agregarAdvertenciaCantidad").hide();
            $("#agregarSubtotal").val('');
            $("#agregarDescuento").attr('readonly', true).val('');
            $("#agregarTotal").val('');
            $("#nuevoEstatus").val('Pendiente');
            $("#divFormaDePago").hide();
            $("#agregarImpuesto1").prop("checked", false);
            $("#modoPagoSelected").val("Efectivo");
            $("#agregarNota").val("");


        } else {
            if (validarFormularioAfter("formCrearVenta")) {
                $("#formCrearVenta").submit();
            }

        }

    });

    /* Evento disparador del ajax */
    $("#identificacion").change(function() {
        var identificacion = $(this).val();
        var nacionalidad = $("#nacionalidad").val();
        if (identificacion != "" && nacionalidad != "") {
            cargarCliente(identificacion, nacionalidad, "1");
        }
    });
    $("#nacionalidad").change(function() {
        var identificacion = $("#identificacion").val();
        var nacionalidad = $(this).val();
        if (identificacion != "" && nacionalidad != "") {
            cargarCliente(identificacion, nacionalidad, "1");
        }
    });

    function cargarCliente(identificacion, nacionalidad, tipo) {
        $.ajax({
            url: "cargarCliente",
            data: {
                identificacion: identificacion,
                nacionalidad: nacionalidad,
                tipo: tipo
            },
            type: 'POST',
            success: function(data) {
                if (data != "[]") {
                    data = JSON.parse(data);
                    document.getElementById('resultadoAjax').innerHTML = "" + data[0]["nombre"] + " ya es cliente";
                    $("#idCliente").val(data[0]["id_cliente"]);
                    $("#tipoDocumento").val(data[0]["id_documento"]);
                    $("#nombre").val(data[0]["nombre"]);
                    $("#primerApellido").val(data[0]["primer_apellido"]);
                    $("#segundoApellido").val(data[0]["segundo_apellido"]);
                    $("#genero").val(data[0]["genero"]);
                    if (data[0]["fecha_nacimiento"]) {
                        var fechaNacimiento = (data[0]["fecha_nacimiento"]).split('-')
                        $("#fechaNacimiento").val(fechaNacimiento[2] + "/" + fechaNacimiento[1] + "/" + fechaNacimiento[0]);
                    } else {
                        $("#fechaNacimiento").val("");
                    }
                    $("#telefono").val(data[0]["telefono"]);
                    $("#email").val(data[0]["email"]);
                    $("#idEstadoCivil").val(data[0]["id_estado_civil"]);
                    $("#ocupacion").val(data[0]["ocupacion"]);
                    $("#direccion").val(data[0]["direccion"]);
                    bloquearInputPersona();
                    $("#resultadoAjax").css("color", "#669533");
                    $("#resultadoAjax").show();
                } else {
                    /*$("#idCliente").val("");
                    //  resetEnCaliente();
                    desBoquearInputPersona();
                    document.getElementById('resultadoAjax').innerHTML = "Este cliente es nuevo";
                    $("#resultadoAjax").css("color", "#317eac");
                    $("#resultadoAjax").show();
                    */
                }

            }
        });
    }
    function bloquearInputPersona() {
        $("#tipoDocumento option:not(:selected)").attr('disabled', 'disabled');
        $("#tipoDocumento").addClass("selectBloqueado");
        $("#idEstadoCivil option:not(:selected)").attr('disabled', 'disabled');
        $("#idEstadoCivil").addClass("selectBloqueado");
        $("#genero option:not(:selected)").attr('disabled', 'disabled');
        $("#genero").addClass("selectBloqueado");
        $("#nombre").addClass("uneditable-input").attr('readonly', true);
        $("#primerApellido").addClass("uneditable-input").attr('readonly', true);
        $("#segundoApellido").addClass("uneditable-input").attr('readonly', true);
        $('#fechaNacimiento').datepicker("option", "minDate", 0).datepicker("option", "maxDate", 0).addClass("uneditable-input").attr('readonly', true);
        $("#telefono").addClass("uneditable-input").attr('readonly', true);
        $("#email").addClass("uneditable-input").attr('readonly', true);
        $("#ocupacion").addClass("uneditable-input").attr('readonly', true);
        $("#direccion").addClass("uneditable-input").attr('readonly', true);
        $("#datosPersona .editar").show();
    }
    function desBoquearInputPersona() {
        $("#tipoDocumento option").removeAttr('disabled');
        $("#tipoDocumento").removeClass("selectBloqueado").val('');
        $("#idEstadoCivil option").removeAttr('disabled');
        $("#idEstadoCivil").removeClass("selectBloqueado").val('');
        $("#genero option").removeAttr('disabled');
        $("#genero").removeClass("selectBloqueado").val('');
        $("#nombre").removeClass("uneditable-input").attr('readonly', false).val('');
        $("#primerApellido").removeClass("uneditable-input").attr('readonly', false).val('');
        $("#segundoApellido").removeClass("uneditable-input").attr('readonly', false).val('');
        $('#fechaNacimiento').removeClass("uneditable-input").attr('readonly', false).val('');
        $("#telefono").removeClass("uneditable-input").attr('readonly', false).val('');
        $("#email").removeClass("uneditable-input").attr('readonly', false).val('');
        $("#ocupacion").removeClass("uneditable-input").attr('readonly', false).val('');
        $("#direccion").removeClass("uneditable-input").attr('readonly', false).val('');
        $("#datosPersona .editar").hide();
    }
    $("#datosPersona a.editar").click(function() {
        $("+ span.error", $(this)).remove();
        $('#fechaNacimiento').datepicker('enable');
        $("+ input", $(this)).focus().removeClass("uneditable-input").attr('readonly', false);
        $("+ select", $(this)).focus().removeClass("selectBloqueado");
        $("+ select option", $(this)).focus().removeAttr('disabled');

    });
    function cargarDatosAutocompelte(ui) {
        document.getElementById('resultadoAjax').innerHTML = "" + ui.item.value + " ya es cliente";
        $("#resultadoAjax").css("color", "#669533");
        $("#resultadoAjax").show();
        $("#idCliente").val(ui.item.id_cliente);
        $("#nacionalidad").val(ui.item.id_pais);
        $("#identificacion").val(ui.item.documento);
        $("#tipoDocumento").val(ui.item.id_documento);
        $("#fechaNacimiento").val(ui.item.fecha_nacimiento);
        $("#nombre").val(ui.item.nombre);
        $("#primerApellido").val(ui.item.primer_apellido);
        $("#segundoApellido").val(ui.item.segundo_apellido);
        $("#direccion").val(ui.item.direccion);
        $("#telefono").val(ui.item.telefono);
        $("#email").val(ui.item.email);
        $("#ocupacion").val(ui.item.ocupacion);
        bloquearInputPersona();
    }
    $("#nombre").autocomplete({
        source: "ajax/autocompleteCliente?action=nombre",
        minLength: 2,
        select: function(event, ui) {
            cargarDatosAutocompelte(ui);
            event.preventDefault();
        }
    });

    $("#primerApellido").autocomplete({
        source: "ajax/autocompleteCliente?action=primerApellido",
        minLength: 2,
        select: function(event, ui) {
            cargarDatosAutocompelte(ui);
            event.preventDefault();
        }
    });

    $("#segundoApellido").autocomplete({
        source: "ajax/autocompleteCliente?action=segundoApellido",
        minLength: 2,
        select: function(event, ui) {
            cargarDatosAutocompelte(ui);
            event.preventDefault();
        }
    });
});